home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_300 / 353_02 / templat3.cpp < prev    next >
C/C++ Source or Header  |  1992-01-18  |  1KB  |  62 lines

  1.                 // Chapter 9 - Program 8
  2. #include <stdio.h>
  3. #include "date.h"
  4.  
  5. const int MAXSIZE = 128;
  6.  
  7. template<class ANY_TYPE>
  8. class stack
  9. {
  10.    ANY_TYPE array[MAXSIZE];
  11.    int stack_pointer;
  12. public:
  13.    stack(void) { stack_pointer = 0; };
  14.    void push(ANY_TYPE in_dat) { array[stack_pointer++] = in_dat; };
  15.    ANY_TYPE pop(void)    { return array[--stack_pointer]; };
  16.    int empty(void)       { return (stack_pointer == 0); };
  17. }
  18.  
  19. char name[] = "John Herkimer Doe";
  20.  
  21. void main(void)
  22. {
  23. stack<char *> string_stack;
  24. stack<date *> class_stack;
  25. date cow, pig, dog, extra;
  26.  
  27.    class_stack.push(&cow);
  28.    class_stack.push(&pig);
  29.    class_stack.push(&dog);
  30.    class_stack.push(&extra);
  31.  
  32.    string_stack.push("This is line 1");
  33.    string_stack.push("This is the second line");
  34.    string_stack.push("This is the third line");
  35.    string_stack.push(name);
  36.  
  37.    for (int index = 0 ; index < 5 ; index++) {
  38.       extra = *class_stack.pop();
  39.       printf("Date = %d %d %d\n", extra.get_month(),
  40.                                   extra.get_day(), extra.get_year());
  41.    };
  42.  
  43.    printf("\n     Strings\n");
  44.    do {
  45.       printf("%s\n", string_stack.pop());
  46.    } while (!string_stack.empty());
  47. }
  48.  
  49.  
  50. // Result of execution
  51.  
  52. // Date = 1 7 1992
  53. // Date = 1 7 1992
  54. // Date = 1 7 1992
  55. // Date = 1 7 1992
  56. //
  57. //      Strings
  58. // John Herkimer Doe
  59. // This is the third line
  60. // This is the second line
  61. // This is line 1
  62.